iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
1
Software Development

轉職初新者系列-C#初學攻略心法系列 第 10

[2018鐵人賽Day10]C#初學攻略心法-箱子的奧秘

  • 分享至 

  • xImage
  •  

突然有個聲音出現在耳旁:
「嘿,年輕人,看你這麼有雄心壯志,讓我助你一臂之力吧
這個盒子,架構如同陣列,你應該已經學會相關技巧了吧,我把它命名為乾坤盒
可依照你的意思變化大小,同時裡頭可以存放你想要存放的物品
希望你能可能好好運用它,我很看好你的嘿,別當個白癡勇者了」

(啵的一聲,一個盒子莫名出現在手中)

為什麼要幫我,該不會有詐吧
尼瑪,一波未平一波又起啊
你才是白痴!!!
你全家都是白痴!!!

=====================================

「陣列」
顧名思義是由「臨兵鬥者,皆陣列在前」裡的陣列所取名,可以存放許多戰力
(喂~咳咳,這邊不是話唬爛專區啦,別亂教啦!)

(以上為話唬爛)

「陣列」
可以在陣列資料結構中儲存相同類型的多個變數
可以指定陣列元素的類型來宣告陣列

使用規則:
需要使用類別陣列宣告變數為陣列,new 運算子是用來建立陣列,並將陣列元素初始化為其預設值

類型[] 名稱 = new 類型[長度];
string[] Value = new string[10];
string[] Value = new string[]{"?","?"};

那讓我們實際體驗一下陣列的魅力吧

[Step by Step簡易實戰]
Step1.
請開啟Day7方案,並如圖新增四個label跟兩個Button

https://ithelp.ithome.com.tw/upload/images/20171229/200913330Db9PyjUIW.jpg

Step2.
接著要來設定對話框的使用
「專案」→「加入參考」
「組件」→「架構」→「Microsoft.VisualBasic」

https://ithelp.ithome.com.tw/upload/images/20171229/20091333rrxSAMzllC.jpg

https://ithelp.ithome.com.tw/upload/images/20171229/20091333o48Z9RITLb.jpg

Step3.
先設定好這次實作的相關變數
箱子容量為10

https://ithelp.ithome.com.tw/upload/images/20171229/20091333ro5H661GP5.jpg

Step4.
接著先撰寫好取得箱子內容清單的方法,以及判斷取出時輸入的是否為數字

//判斷輸入值是否為數字
private bool IsNumber(string TextBoxValue)
{
	try
	{
		int i = Convert.ToInt32(TextBoxValue);
		return true;
	}
	catch
	{
		return false;
	}
}

//取得目前盒子內儲存清單
private void ArrayData()
{
	string tmpString = "";
	for (int i = 0; i < BoxArray.Length; i++)
	{
		tmpString += "第" + (i + 1) + "空間位置 => " + BoxArray[i] + Environment.NewLine;
	}
	label5.Text = tmpString;
}

https://ithelp.ithome.com.tw/upload/images/20171229/20091333LkcU16uMKj.jpg

Step5.
接著將要顯示的變數與執行取得清單的方法設置好

label2.Text = BoxArray.Length.ToString();
label4.Text = count.ToString();
ArrayData();

https://ithelp.ithome.com.tw/upload/images/20171229/20091333OTQnElyWzg.jpg

Step6.
將Button1的事件裡,撰寫存入的語法

string SaveName = Interaction.InputBox("存入物品名稱", "存入", "", -1, -1);  //-1表示在螢幕中間

//驗證是否為空
if (!String.IsNullOrEmpty(SaveName))
{
	BoxArray[countArrayKey] = SaveName;
	count--;
	countArrayKey++;
	label4.Text = count.ToString();
}
else if (count <= 0)
{
	MessageBox.Show("可儲存的容量不足", "Error Message");
}

//重新取得清單
ArrayData();

https://ithelp.ithome.com.tw/upload/images/20171229/20091333POFDQctxi6.jpg

Step6.
將Button2的事件裡,撰寫取出的語法

string GetString = Interaction.InputBox("取出物品名稱", "取出", "", -1, -1);
            
//驗證是否輸入數字
if (IsNumber(GetString))
{
	int GetIndex = Convert.ToInt16(GetString) - 1;
	
	//驗證是否大於0,小於10
	if (GetIndex > -1 && GetIndex < 10)
	{
		if (!String.IsNullOrEmpty(BoxArray[GetIndex]))
		{
			MessageBox.Show("取出物品:" + BoxArray[GetIndex]);
		}
	}
}

https://ithelp.ithome.com.tw/upload/images/20171229/20091333DBQdBBmOH9.jpg

Step7.
按下F5,先執行存入按鈕事件,在嘗試取出的按鈕事件

https://ithelp.ithome.com.tw/upload/images/20171229/200913332YGpkHzw9o.jpg

https://ithelp.ithome.com.tw/upload/images/20171229/20091333YJMJPk2zpb.jpg

=====================================

筆者云:你才Bug,你全家都Bug!!

參考資料:
陣列 (C# 程式設計手冊)
https://docs.microsoft.com/zh-tw/dotnet/csharp/programming-guide/arrays/


上一篇
[2018鐵人賽Day9]C#初學攻略心法-一個口令一個動作,準備出發Go
下一篇
[2018鐵人賽Day11]C#初學攻略心法-箱子的進階奧秘
系列文
轉職初新者系列-C#初學攻略心法30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
ogilice
iT邦新手 5 級 ‧ 2019-06-12 16:10:32

請問您所寫的取出是不是只是跳出視窗顯示已取出,但實際上label並沒有真的取出,而且空間數也沒有增加,因為想把他用得完整一些~~

Old Siao iT邦研究生 1 級 ‧ 2019-06-13 11:24:46 檢舉

是的/images/emoticon/emoticon16.gif(偷懶被抓包了/images/emoticon/emoticon37.gif

你可以在Step6試看看補強一下
/images/emoticon/emoticon08.gif

ogilice iT邦新手 5 級 ‧ 2019-06-14 10:53:51 檢舉

哈哈了解~~也謝謝你的教學提供XD

我要留言

立即登入留言